﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using CP.Entities;

namespace CP.DataAccess 
{
   public class ClienteDAO: IClienteDAO
    {
        
            ConnectionStringSettings settings = ConfigurationManager.ConnectionStrings["caprs"];

            public void RegistarCliente(ClienteBE cliente)
            {


                using (SqlConnection cnx = new SqlConnection(settings.ConnectionString))
                {

                    cnx.Open();
                    SqlCommand comando = new SqlCommand("INSERT INTO Cliente (nombres, apellidos, dni, fechaNac, sexo) VALUES (@nombre,@apellido,@dni,@fechanacimiento,@sexo)", cnx);
                    comando.Parameters.AddWithValue("@nombre", cliente.nombres);
                    comando.Parameters.AddWithValue("@apellido", cliente.apellidos);
                    comando.Parameters.AddWithValue("@dni", cliente.dni);
                    comando.Parameters.AddWithValue("@fechanacimiento", cliente.fechaNac);
                    comando.Parameters.AddWithValue("@sexo", cliente.sexo);
                    comando.ExecuteNonQuery();


                }

            }

            public List<ClienteBE> Listadeclientes()
            {
                List<ClienteBE> lista = new List<ClienteBE>();


                using (SqlConnection cnx = new SqlConnection(settings.ConnectionString))
                {
                    cnx.Open();

                    SqlCommand cmd = new SqlCommand("ListaClientes", cnx);
                    cmd.CommandType = CommandType.StoredProcedure;
                    SqlDataReader lee = cmd.ExecuteReader();

                    if (lee.HasRows)
                    {
                        while (lee.Read())

                            lista.Add(new ClienteBE(lee.GetInt32(0), lee.GetString(1), lee.GetString(2), lee.GetString(3), lee.GetDateTime(4), lee.GetString(5)));

                    }
                    lee.Close();

                }

                return lista;
            }

            public void UpdateCliente(ClienteBE cliente)
            {
                using (SqlConnection cnx = new SqlConnection(settings.ConnectionString))
                {

                    cnx.Open();
                    SqlCommand comando = new SqlCommand("UPDATE    Cliente SET  nombres = @nombre, apellidos = @apellido, dni= @dni, fechaNac = @fecha, sexo = @sexo where codigo =@idcliente", cnx);

                    comando.Parameters.AddWithValue("@idcliente", cliente.codigo);
                    comando.Parameters.AddWithValue("@nombre", cliente.nombres);
                    comando.Parameters.AddWithValue("@apellido", cliente.apellidos);
                    comando.Parameters.AddWithValue("@dni", cliente.dni);
                    comando.Parameters.AddWithValue("@fecha", cliente.fechaNac);
                    comando.Parameters.AddWithValue("@sexo", cliente.sexo);
                    comando.ExecuteNonQuery();


                }
            }

            public void DeleteCliente(ClienteBE cliente)
            {
                using (SqlConnection cnx = new SqlConnection(settings.ConnectionString))
                {

                    cnx.Open();
                    SqlCommand comando = new SqlCommand("DELETE FROM Cliente where codigo =@idcliente", cnx);

                    comando.Parameters.AddWithValue("@idcliente", cliente.codigo);

                    comando.ExecuteNonQuery();


                }
            }
        }
    }

